<?php
/**
 * 【观察者模式适用场景】
当一个抽象模型有两个方面，其中一个方面依赖于另一个方面。
当对一个对象的改变需要同时改变其它对象，而不知道具体有多少个对象待改变。
当一个对象必须通知其它对象，而它又不能假定其它对象是谁。换句话说，你不希望这些对象是紧密耦合的。
 * Created by PhpStorm.
 * User: liangtiehui
 * Date: 2016/4/18
 * Time: 20:51
 */

namespace Observer;

/**
 * 抽象主题接口
 * Interface Subject
 * @package Observer
 */
interface Subject
{
    /**
     * 增加一个观察者对象
     * @param Observer $observer
     * @return mixed
     */
    public function attach(Observer $observer);

    /**
     * 删除一个观察者对象
     * @param Observer $observer
     * @return mixed
     */
    public function detach(Observer $observer);

    /**
     * 通知所有观察者对象
     * @return mixed
     */
    public function notifyObservers();
}